package kgame5.k3d.core.obj3d.info.geometry {
import kgame5.k3d.core.math.NumberUV;
import kgame5.k3d.core.math.Vertex3D;

/**
 * @author kangkai
 * 几何信息，保存顶点和各个三角面.这个可以公用.保持边界
 * 
 * 转变思路，这个做成不共享的
 * 理由：
 * 1，共享并不能解决游戏中的所有问题
 * 2，共享带来了问题
 * 
 * !!!严重注意，这个是不共享的啊
 */
public class GeometryInfo {
	//边界-这个暂时不用
	///-public var aabb:AABB;
	///-public var bball:BBall;
	
	//顶点坐标
	public var aVertex:Vector.<Vertex3D>;
	
	//纹理坐标
	public var aNumberUV:Vector.<NumberUV>;
	
	//三角面
	public var aFace:Vector.<Face3D>;
	
	//线,这个不作为游戏内容出现，这个主要是调试用的,且这个没有排序
	//注意,BestGruoup3D是不支持这个的
	public var aLine:Vector.<Line3D>;
	
	public function GeometryInfo(){
		aVertex=new Vector.<Vertex3D>();
		aNumberUV=new Vector.<NumberUV>();
		aFace=new Vector.<Face3D>();
		
//		//--由visu顶点得出的ABH
//		aabb=AABB.CreateFromVertices(data3d.aVB_p);
//		bball=BBall.CreateFromVertices(data3d.aVB_p);
	}
	
	public function clone():GeometryInfo{
		
		var i:int=0;
		
		var gi:GeometryInfo=new GeometryInfo();
		
		gi.aVertex=new Vector.<Vertex3D>();
		for(i=0;i<aVertex.length;i++){
			gi.aVertex.push(aVertex[i].clone());
		}
		
		gi.aNumberUV=new Vector.<NumberUV>();
		for(i=0;i<aNumberUV.length;i++){
			gi.aNumberUV.push(aNumberUV[i].clone());
		}
		
		gi.aFace=new Vector.<Face3D>();
		for(i=0;i<aFace.length;i++){
			var src:Face3D=aFace[i];
			var ff:Face3D=new Face3D(gi,src.a,src.b,src.c,src.at,src.bt,src.ct);
			gi.aFace.push(ff);
		}
		
		return gi;
	}
}
}
